//创建一个线程并启动
public class Demo1 {
    public static void main(String[] args) {
        Thread thread=new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println("hello thread!");
            }
        });
        //启动
        thread.start();
    }
}
/*
1. Thread thread = new Thread(...)
这行代码的作用是创建一个 Thread 类的实例，Thread 类是 Java 中用于创建和管理线程的核心类。thread 是我们为这个线程对象起的变量名，
通过这个变量名，我们可以对该线程进行后续的操作，比如启动线程、中断线程等。

2. new Runnable() {... }
这里使用了匿名内部类的方式创建了一个 Runnable 接口的实例。Runnable 接口是一个函数式接口，它只有一个抽象方法 run()，用于定义线程要执行的任务。

3.public void run() { ... }
这是 Runnable 接口中定义的抽象方法，我们需要在这个方法中编写线程要执行的具体任务。在这个例子中，任务就是输出字符串 "hello thread!"。

代码运行流程
在 main 方法中，创建了一个 Thread 对象 thread，并为其传入一个实现了 Runnable 接口的匿名内部类实例。
调用 thread.start() 方法启动线程。start() 方法会让 Java 虚拟机为该线程分配必要的系统资源，并将其放入线程调度器的可运行队列中，等待 CPU 调度执行。
当 CPU 调度到该线程时，会执行 run() 方法中的代码，输出 "hello thread!"。
*/

/*
匿名内部类是 Java 中一种特殊的内部类，它没有显式的类名，通常用于在需要一个实现了某个接口或继承了某个类的对象时，临时创建一个简单的类实例。

语法
匿名内部类的语法格式如下：
new 父类构造器(参数列表) | 实现接口() {
    // 类的主体
}

继承类的匿名内部类
class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}
public class Main {
    public static void main(String[] args) {
        // 创建一个继承自 Animal 类的匿名内部类实例
        Animal cat = new Animal() {
            @Override
            public void sound() {
                System.out.println("Meow");
            }
        };
        cat.sound();
    }
}

实现接口的匿名内部类
interface Printable {
    void print();
}
public class Main {
    public static void main(String[] args) {
        // 创建一个实现 Printable 接口的匿名内部类实例
        Printable printable = new Printable() {
            @Override
            public void print() {
                System.out.println("Printing...");
            }
        };
        printable.print();
    }
}
*/
